package main

import (
	"flag"
	"fmt"
	"log"
)

// RunCommand 运行初始化命令
func RunCommand() {
	// 定义命令行参数
	var (
		initDB    = flag.Bool("init", false, "初始化数据库")
		resetDB   = flag.Bool("reset", false, "重置数据库（危险操作）")
		showStatus = flag.Bool("status", false, "显示数据库状态")
		help      = flag.Bool("help", false, "显示帮助信息")
	)

	flag.Parse()

	// 显示帮助信息
	if *help {
		showHelp()
		return
	}

	// 检查是否有参数
	if !*initDB && !*resetDB && !*showStatus {
		showHelp()
		return
	}

	// 创建数据库初始化器
	initializer, err := NewDatabaseInitializer()
	if err != nil {
		log.Fatalf("创建数据库初始化器失败: %v", err)
	}

	// 执行相应的操作
	if *initDB {
		if err := initializer.InitDatabase(); err != nil {
			log.Fatalf("初始化数据库失败: %v", err)
		}
		fmt.Println("✅ 数据库初始化完成!")
	}

	if *resetDB {
		if err := initializer.ResetDatabase(); err != nil {
			log.Fatalf("重置数据库失败: %v", err)
		}
		fmt.Println("✅ 数据库重置完成!")
	}

	if *showStatus {
		if err := initializer.ShowStatus(); err != nil {
			log.Fatalf("显示数据库状态失败: %v", err)
		}
	}
}

// showHelp 显示帮助信息
func showHelp() {
	fmt.Println("数据库初始化工具")
	fmt.Println()
	fmt.Println("用法:")
	fmt.Println("  go run src/initialize/cmd.go [选项]")
	fmt.Println()
	fmt.Println("选项:")
	fmt.Println("  -init     初始化数据库（创建表结构和基础数据）")
	fmt.Println("  -reset    重置数据库（删除所有数据并重新初始化）")
	fmt.Println("  -status   显示数据库状态（各表记录数）")
	fmt.Println("  -help     显示此帮助信息")
	fmt.Println()
	fmt.Println("示例:")
	fmt.Println("  go run src/initialize/cmd.go -init")
	fmt.Println("  go run src/initialize/cmd.go -status")
	fmt.Println("  go run src/initialize/cmd.go -reset")
	fmt.Println()
	fmt.Println("注意:")
	fmt.Println("  -reset 选项会删除所有数据，请谨慎使用!")
} 